跳到主要内容

申请 apiKey

什么是 Arseeding​

Arseeding 支持 Bundle(ANS-104)类型的交易。与 Arweave 原生交易相比,Bundle 交易更适合大量小文件存储的场景。在使用 Bundle 交易存储数据时,Arseeding 支持使用 everPay 进行存储费用支付,这意味着你不必持有 AR 代币也能使用 Arweave 的文件存储服务。同时,Arseeding 可以 100% 保证将文件上传到 Arweave 节点,提高开发人员的存储体验。

为什么我们需要 Apikey​

因为使用 Arseeding 需要钱包,对非 web3 的用户或开发者不友好,所以我们开发了预付费功能(类似卡密)来支持传统开发者使用 Arweave。预付费功能主要由支持 apikey 体现。Arseeding apikey 需要预先充值一定数量的代币,在未来使用 Arseeding 上传数据到 Arweave 网络时可以通过传入 apikey 抵扣存储费用,而不必使用 web3 钱包!

本教程将介绍如何使用 apikey 为 Arseeding 上传数据到 Arweave 付费。

获取 Apikey​

Arseeding Apikey 与钱包地址绑定。访问 Apikey 前端 使用 EVM 兼容的钱包登录网页,使用 everpay 支持的代币充值可以得到一个预付费的 apikey(首次充值会为新钱包自动生成一个 apikey),稍后我们可以使用这个 apikey 调用 Arseeding 相关接口将数据永久保存到 Arweave 网络!

Apikey 像密码一样重要!拥有 apikey 的人可以任意使用 apikey 中的余额,因此 apikey 不能随意泄露。

使用 Apikey 抵扣存储费用​

下面以 arseedingjs sdk 为例子展示如何使用 apikey 将数据存储到 Arweave。


const arseedingUrl = "https://arseed.web3infra.dev";
const apikey = process.env.APIKEY;
const data = "some data here....";
const contentType = "text/html; charset=utf-8";
const tags = { a: "aa", b: "bb" };
const tag = "chaintype-symbol-id...."

const res = await submitByApikey(
arseedingUrl,
apikey!,
tag,
Buffer.from(data),
contentType,
tags
);

console.log({ res });
// {
// res: { itemId: '8pW7W74H8qLqj4p2ZX4vIkfO08K31j4CAXVVLS2pjMw', size: 18 }
// }

上面的 submitByApikey 方法将我们的数据上传到 Arseeding,并由 Arseeding 签名后存储到 Arweave 中。有时我们希望使用自己的钱包签名上传的数据以确权,这时候我们可以使用 createAndSubmitItem 方法:


const arseedingUrl = "https://arseed.web3infra.dev";
const apikey = process.env.APIKEY;
const secret = process.env.SECRET;

const data = "some data here....";
const tags = [
{
name: "a",
value: "aaaa",
},
{
name: "b",
value: "bbb",
},
{
name: "Content-Type",
value: "text/html; charset=utf-8",
},
];

const wallet = Wallet.fromMnemonic(secret!);

const eccSigner = new ArseedingArBundles.signers.EthereumSigner(
wallet.privateKey.substring(2)
);

const res = await Arseeding.createAndSubmitItem(
Buffer.from(data),
{ tags },
{
apiKey: apikey,
currency: "USDC",
arseedUrl: arseedingUrl,
signer: eccSigner,
path: "",
}
);

console.log({ res });
// {
// res: {
// itemId: "TTQ-UsWo6Tj8e6m-WldrSmBmnirs9RmIs0jFMDW50Yw",
// size: 221,
// bundler: "uDA8ZblC-lyEFfsYXKewpwaX-kkNDDw8az3IW9bDL68",
// currency: "USDC",
// decimals: 6,
// fee: "1805",
// paymentExpiredTime: 0,
// expectedBlock: 1159234,
// },
// };

点击跳转该仓库查查看完整示例代码。